From c581ca2cee495dda211c672f59dbc74b73ea8f9a Mon Sep 17 00:00:00 2001 From: "cl349@freefall.cl.cam.ac.uk" Date: Tue, 16 Nov 2004 18:46:54 +0000 Subject: [PATCH] bitkeeper revision 1.1159.1.423 (419a4b1eF-m6DjqBFFvhQQg8V-VsqQ) Initialize trap tables on additional cpus. --- .../arch/xen/i386/kernel/smpboot.c | 3 ++- linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/smpboot.c b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/smpboot.c index 2c26fdb5b7..e05db2c386 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/smpboot.c +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/smpboot.c @@ -835,6 +835,7 @@ static int __init do_boot_cpu(int apicid) extern void startup_32_smp(void); extern void hypervisor_callback(void); extern void failsafe_callback(void); + extern int smp_trap_init(trap_info_t *); int i; cpu = ++cpucount; @@ -894,7 +895,7 @@ static int __init do_boot_cpu(int apicid) ctxt.trap_ctxt[i].vector = i; ctxt.trap_ctxt[i].cs = FLAT_GUESTOS_CS; } - ctxt.fast_trap_idx = 0; + ctxt.fast_trap_idx = smp_trap_init(ctxt.trap_ctxt); /* No LDT. */ ctxt.ldt_ents = 0; diff --git a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c index dd1c42b840..c59d6bfe7c 100644 --- a/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c +++ b/linux-2.6.9-xen-sparse/arch/xen/i386/kernel/traps.c @@ -1073,6 +1073,18 @@ void __init trap_init(void) cpu_init(); } +int smp_trap_init(trap_info_t *trap_ctxt) +{ + trap_info_t *t = trap_table; + + for (t = trap_table; t->address; t++) { + trap_ctxt[t->vector].flags = t->flags; + trap_ctxt[t->vector].cs = t->cs; + trap_ctxt[t->vector].address = t->address; + } + return SYSCALL_VECTOR; +} + /* * install_safe_pf_handler / install_normal_pf_handler: -- 2.30.2